home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / util / cdity / IFX.lha / IFX / AmigaE / speak / speak.e < prev    next >
Text File  |  1998-01-02  |  1KB  |  54 lines

  1. OPT MODULE
  2.  
  3. MODULE 'exec', 'exec/ports', 'exec/io'
  4. MODULE 'devices/narrator', 'translator'
  5.  
  6. EXPORT PROC say(str:PTR TO CHAR, channels=%1100, rate=DEFRATE, pitch=DEFPITCH, mode=DEFMODE, sex=MALE, volume=64) HANDLE
  7.     DEF ioreq:PTR TO ndi, port:PTR TO mp
  8.     DEF phonetic:PTR TO CHAR, len
  9.     
  10.     NEW phonetic[1024]
  11.     
  12.     -> First open translator.library
  13.     translatorbase := OpenLibrary('translator.library', 0)
  14.     IF translatorbase=NIL THEN Raise("LIB")
  15.     
  16.     Translate(str, StrLen(str), phonetic, 1024)
  17.     
  18.     -> Create a message port for replies
  19.     port := CreateMsgPort()
  20.     IF port=NIL THEN Raise("PORT")
  21.     
  22.     -> Create an IORequest
  23.     ioreq := CreateIORequest(port, SIZEOF ndi)
  24.     IF ioreq=NIL THEN Raise("REQ")
  25.     
  26.     ioreq.flags := NIL
  27.     -> Open the Device
  28.     IF OpenDevice('narrator.device', 0, ioreq, 0) THEN Raise("DEV")
  29.     
  30.     -> Prepare to write
  31.     ioreq.iostd.command := CMD_WRITE
  32.     ioreq.iostd.data     := phonetic
  33.     ioreq.iostd.length     := StrLen(phonetic)
  34.     ioreq.chmasks     := [3, 5, 10, 12]:CHAR
  35.     ioreq.nummasks    := 4
  36.     ioreq.rate         := rate
  37.     ioreq.pitch     := pitch
  38.     ioreq.mode         := mode
  39.     ioreq.sex         := sex
  40.     ioreq.volume     := volume
  41.     
  42.     -> Do it.
  43.     DoIO(ioreq)
  44.     
  45. EXCEPT DO
  46.     IF port             THEN DeleteMsgPort(port)
  47.     IF ioreq
  48.         CloseDevice(ioreq)
  49.         DeleteIORequest(ioreq)
  50.     ENDIF
  51.     IF translatorbase    THEN CloseLibrary(translatorbase)
  52.     IF exception THEN RETURN exception
  53. ENDPROC NIL
  54.